home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1997 / MacHack 1997.toast / Hacks / Hacks ’97 / Warrior’s Progress / source code / Source / Libraries / Buffers / ConstBuffer.h < prev    next >
Encoding:
Text File  |  1997-06-28  |  1.0 KB  |  49 lines  |  [TEXT/CWIE]

  1. // ConstBuffer.h
  2.  
  3. #ifndef ConstBuffer_h
  4. #define ConstBuffer_h
  5.  
  6. #ifndef ConstData_h
  7. #include "ConstData.h"
  8. #endif
  9. #ifndef Data_h
  10. #include "Data.h"
  11. #endif
  12.  
  13. class Buffer;
  14.  
  15. class ConstBuffer
  16.   {
  17.     private:
  18.         ConstData space;
  19.         ConstData unused;
  20.     
  21.         // not implemented:
  22.             ConstBuffer( const ConstBuffer& );
  23.             void operator=( const ConstBuffer& );
  24.         
  25.     public:
  26.         ConstBuffer( ConstData );
  27.         
  28.         void Reset()                            { unused = space; }
  29.         void Reset( ConstData );
  30.  
  31.         inline void AdvanceMark( uint32 amount )
  32.                                                     { unused.Shorten( amount ); }
  33.         
  34.         ConstData Used() const                { return space.Head( UsedLength() ); }
  35.         const ConstData& Unused() const    { return unused; }
  36.         
  37.         uint32 TotalLength() const            { return space.Length(); }
  38.         uint32 UsedLength() const            { return space.Length() - unused.Length(); }
  39.         uint32 UnusedLength() const        { return unused.Length(); }
  40.         
  41.         bool IsUnused() const                { return unused.Length() == space.Length(); }
  42.         bool Exhausted() const                { return unused.IsEmpty(); }
  43.         
  44.         void operator>>( Data );
  45.         void operator>>( Buffer& );
  46.   };
  47.  
  48. #endif
  49.